package com.letv.core.utils;

import android.content.Context;
import android.text.TextUtils;

import com.letv.core.api.LetvRequest;
import com.letv.core.bean.TipMapBean;
import com.letv.core.bean.TipMapBean.TipBean;
import com.letv.core.network.volley.VolleyRequest.RequestManner;
import com.letv.core.network.volley.VolleyResponse.CacheResponseState;
import com.letv.core.network.volley.VolleyResult;
import com.letv.core.network.volley.toolbox.VolleyDiskCache;
import com.letv.core.parser.TipBeanListParser;

/**
 * 提示语帮助类
 * 
 * @author zhuqiao
 *
 */
public class TipUtils {
    /** 提示语 **/
    public static TipMapBean mTipMapBean = null;

    /**
     * 获取提示语文案对象
     * 
     * @return
     */
//    private static TipMapBean getTipMapBean() {
//        // 防止被系统回收
//        if (mTipMapBean == null) {
//            Context context = BaseApplication.getInstance();
//            VolleyResult<TipMapBean> result = new LetvRequest<TipMapBean>(context)
//                    .setCache(new VolleyDiskCache(context, TipMapBean.TIP_CACHE_KEY))
//                    .setParser(new TipBeanListParser()).setRequestType(RequestManner.CACHE_ONLY).syncFetch();
//
//            if (result.cacheState != CacheResponseState.SUCCESS) {
//                // 说明数据库没有，以后也不用再去数据库拿了
//                mTipMapBean = new TipMapBean();
//            } else {
//                mTipMapBean = result.result;
//            }
//        }
//        return mTipMapBean;
//    }

    private static TipMapBean getTipMapBean(Context context) {
        // 防止被系统回收
        if (mTipMapBean == null) {
            VolleyResult<TipMapBean> result = new LetvRequest<TipMapBean>(context)
                .setCache(new VolleyDiskCache(context, TipMapBean.TIP_CACHE_KEY))
                .setParser(new TipBeanListParser()).setRequestType(RequestManner.CACHE_ONLY).syncFetch();

            if (result.cacheState != CacheResponseState.SUCCESS) {
                // 说明数据库没有，以后也不用再去数据库拿了
                mTipMapBean = new TipMapBean();
            } else {
                mTipMapBean = result.result;
            }
        }
        return mTipMapBean;
    }

    /**
     * 获取提示语信息
     * 
     * @param constantId
     * @return
     */
//    public static String getTipMessage(String constantId) {
//        return getTipMessage(constantId, "");
//    }

    public static String getTipMessage(Context context,String constantId) {
        return getTipMessage(context,constantId, "");
    }

    /**
     * 获取提示语信息
     * 
     * @param constantId
     * @param defaultResId
     * @return
     */
//    public static String getTipMessage(String constantId, int defaultResId) {
//        return getTipMessage(constantId, BaseApplication.getInstance().getString(defaultResId));
//    }

    public static String getTipMessage(Context context,String constantId, int defaultResId) {
        return getTipMessage(context,constantId, context.getString(defaultResId));
    }

    /**
     * 获取提示语信息
     * 
     * @param constantId
     * @param defaultText
     * @return
     */
//    public static String getTipMessage(String constantId, String defaultText) {
//        TipBean bean = getTipBean(constantId);
//        if (bean != null) {
//            return bean.getMessage().replace("#", "\n");
//        }
//
//        return defaultText.replace("#", "\n");
//    }

    public static String getTipMessage(Context context,String constantId, String defaultText) {
        TipBean bean = getTipBean(context,constantId);
        if (bean != null) {
            return bean.getMessage().replace("#", "\n");
        }

        return defaultText.replace("#", "\n");
    }

    /**
     * 获取提示语标题
     * 
     * @param constantId
     * @return
     */
//    public static String getTipTitle(String constantId) {
//        return getTipTitle(constantId, -1);
//    }

    public static String getTipTitle(Context context,String constantId) {
        return getTipTitle(context,constantId, -1);
    }

    /**
     * 获取提示语标题
     * 
     * @param constantId
     * @param defaultText
     * @return
     */
//    public static String getTipTitle(String constantId, String defaultText) {
//        TipBean bean = getTipBean(constantId);
//        if (bean != null && !TextUtils.isEmpty(bean.getTitle())) {
//            return bean.getTitle();
//        }
//
//        return defaultText;
//    }

    /**
     * 获取提示语标题
     * 
     * @param constantId
     * @param defaultResId
     * @return
     */
//    public static String getTipTitle(String constantId, int defaultResId) {
//        TipBean bean = getTipBean(constantId);
//        if (bean != null && !TextUtils.isEmpty(bean.getTitle())) {
//            return bean.getTitle();
//        }
//
//        if (defaultResId >= 0) {
//            return BaseApplication.getInstance().getString(defaultResId);
//        }
//
//        return "";
//    }

    public static String getTipTitle(Context context,String constantId, int defaultResId) {
        TipBean bean = getTipBean(context,constantId);
        if (bean != null && !TextUtils.isEmpty(bean.getTitle())) {
            return bean.getTitle();
        }

        if (defaultResId >= 0) {
            return context.getString(defaultResId);
        }

        return "";
    }

    /**
     * 获取提示语对象
     * 
     * @param constantId
     * @return
     */
//    public static TipBean getTipBean(String constantId) {
//        TipMapBean mapBean = getTipMapBean();
//        if (mapBean == null || !BaseTypeUtils.isMapContainsKey(mapBean.getMap(), constantId)) {
//            return null;
//        }
//
//        return mapBean.getMap().get(constantId);
//    }

    public static TipBean getTipBean(Context context,String constantId) {
        TipMapBean mapBean = getTipMapBean(context);
        if (mapBean == null || !BaseTypeUtils.isMapContainsKey(mapBean.getMap(), constantId)) {
            return null;
        }

        return mapBean.getMap().get(constantId);
    }
}
